﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Cotizav.PRESENTACION.Maestro
{
    public partial class IUCargo : Form
    {
        List<CONEXION.CARGO> cargos;
        CtrlCargo ctCargo;
        
        public IUCargo()
        {
            InitializeComponent();

            cargos = new List<CONEXION.CARGO>();
            ctCargo = new CtrlCargo();
        }

        private void IUCargo_Load(object sender, EventArgs e)
        {
            cargos = ctCargo.getListCargos();
            gridCargo.DataSource = null;
            gridCargo.DataSource = cargos;
            setRowsReadOnly();
        }

        private void setRowsReadOnly()
        {
            foreach (DataGridViewRow dr in gridCargo.Rows)
            {
                dr.ReadOnly = true;
            }
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(txtNombreCargo.Text))
            {
                //procedemos a registrar
                CONEXION.CARGO car = new CONEXION.CARGO()
                {
                    nombreCargo = txtNombreCargo.Text,
                    eliminado = 0
                };

                ctCargo.registrarCargo(car);

                //actualizamos la lista      
                cargos = ctCargo.getListCargos();
                gridCargo.DataSource = null;
                gridCargo.DataSource = cargos;

                setRowsReadOnly();

                txtNombreCargo.ResetText();
            }
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            if (gridCargo.SelectedRows.Count > 0)
            {
                btnAgregar.Enabled = false;
                txtNombreCargo.Enabled = false;
                btnEliminar.Enabled = false;

                switch (btnModificar.Text)
                {
                    case "Modificar":
                        int index = gridCargo.SelectedRows[0].Index;

                        //cambiamos el boton de modificar
                        btnModificar.Text = "Completar";
                        btnModificar.Image = global::Cotizav.Properties.Resources.accept;

                        //mostramos el boton cancelar
                        btnCancelar.Visible = true;

                        //volvemos la celda editable
                        gridCargo.SelectedRows[0].ReadOnly = false;
                        gridCargo.SelectedRows[0].Cells[1].Selected = true;
                        gridCargo.CurrentCell = gridCargo.SelectedRows[0].Cells[1];
                        gridCargo.BeginEdit(true);
                        break;
                    case "Completar":
                        int ind = gridCargo.CurrentRow.Index;
                        if (gridCargo.Rows[ind].Cells[1].Value != null)
                        {
                            if (MessageBox.Show("¿Confirma actualizar la operación?", "COTIZAV", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.OK)
                            {
                                CONEXION.CARGO car = new CONEXION.CARGO()
                                {
                                    idCargo = gridCargo.Rows[ind].Cells[0].Value.ToString(),
                                    nombreCargo = gridCargo.Rows[ind].Cells[1].Value.ToString(),
                                    eliminado = 0
                                };

                                DialogResult dr = ctCargo.actualizarCargo(car);
                            }
                        }
                        else
                        {
                            MessageBox.Show("La celda se encuentra vacía", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                        }

                        //actualizamos la lista      
                        cargos = ctCargo.getListCargos();
                        gridCargo.DataSource = null;
                        gridCargo.DataSource = cargos;

                        setRowsReadOnly();

                        //cambiamos el boton de modificar
                        btnModificar.Text = "Modificar";
                        btnModificar.Image = global::Cotizav.Properties.Resources.contactoedit;

                        //ocultamos  el boton cancelar
                        btnCancelar.Visible = false;

                        //habilitamos el panel superior
                        btnAgregar.Enabled = true;
                        txtNombreCargo.Enabled = true;
                        btnEliminar.Enabled = true;

                        break;
                }
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            //actualizamos la lista      
            cargos = ctCargo.getListCargos();
            gridCargo.DataSource = null;
            gridCargo.DataSource = cargos;

            setRowsReadOnly();

            //cambiamos el boton de modificar
            btnModificar.Text = "Modificar";
            btnModificar.Image = global::Cotizav.Properties.Resources.contactoedit;

            //ocultamos  el boton cancelar
            btnCancelar.Visible = false;

            //habilitamos el panel superior
            btnAgregar.Enabled = true;
            txtNombreCargo.Enabled = true;
            btnEliminar.Enabled = true;
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (gridCargo.SelectedRows.Count > 0)
            {
                if (MessageBox.Show("¿Confirma eliminar la fila?", "Cotizav", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
                {
                    int index = gridCargo.SelectedRows[0].Index;
                    CONEXION.CARGO car = cargos.ElementAt(index);
                    car.eliminado = 1;

                    ctCargo.eliminarCargo(car);
                }
            }

            //actualizamos la lista      
            cargos = ctCargo.getListCargos();
            gridCargo.DataSource = null;
            gridCargo.DataSource = cargos;

            setRowsReadOnly();
        }

        private void gridCargo_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridCargo.DataSource != null)
            {
                gridCargo.Columns["idCargo"].Visible = false;
                gridCargo.Columns["nombreCargo"].HeaderText = "Cargo";
                gridCargo.Columns["nombreCargo"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                gridCargo.Columns["eliminado"].Visible = false;
            }
        }
    }
}
